package opf5.entities.repositorios;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;

import opf5.entities.dominio.Jugador;
import opf5.entities.dominio.Partido;
import opf5.entities.partidos.RepositorioPartidosEnMemoria;
import opf5.persistencia.OPF5DBGateway;
import opf5.persistencia.OPF5SessionManager;
import opf5.persistencia.proxies.PartidoDBProxy;

public class RepositorioPartidosPersistente implements RepositorioPartidos {
	private RepositorioPartidosEnMemoria repositorio = new RepositorioPartidosEnMemoria();

	public RepositorioPartidosPersistente() {
		this.actualizarPartidos();
	}
	
	@Override
	public List<Partido> getPartidos() {
		this.actualizarPartidos();
		return repositorio.getPartidos();
	}
	
	@Override
	public List<Partido> getPartidosDisponiblesPara(Jugador jugador) {
		return repositorio.getPartidosDisponiblesPara(jugador);
	}

	public void actualizarPartidos() {
		List<Partido> partidos = OPF5DBGateway.getPartidos();		
		this.repositorio.setPartidos(partidos);
	}

	@Override
	public void agregarPartido(Partido partido) {
		this.actualizarPartidos();
	}

	@Override
	public List<Partido> getPartidosInscriptos(Jugador jugador) {
		return this.repositorio.getPartidosInscriptos(jugador);
	}

	@Override
	public List<Partido> getPartidosConInscripcionAbierta() {
		return this.repositorio.getPartidosConInscripcionAbierta();
	}

	@Override
	public void eliminarPartido(Partido partido) {
		this.actualizarPartidos();
	}

	@Override
	public List<Partido> getPartidosJugadosPor(Jugador jugador) {
		return this.repositorio.getPartidosJugadosPor(jugador);
	}

	@Override
	public List<Partido> getPartidosNoJugadosDe(Jugador jugador) {
		return this.repositorio.getPartidosNoJugadosDe(jugador);
	}

}
